package com.hua.designpattern.j2eepattern.filterinterceptor;

/**
 * 
 * @author joshua
 *
 *         <pre>
 *         
 *   拦截过滤器模式（Intercepting Filter Pattern）用于对应用程序的请求或响应做一些预处理/后处理。
 *   	定义过滤器，并在把请求传给实际目标应用程序之前应用在请求上。
 *   	过滤器可以做认证/授权/记录日志，或者跟踪请求，然后把请求传给相应的处理程序。
 *   
 *   角色：
 *   	前端控制器（Front Controller） - 处理应用程序所有类型请求的单个处理程序，应用程序可以是基于 web 的应用程序，也可以是基于桌面的应用程序。
 *   	调度器（Dispatcher） - 前端控制器可能使用一个调度器对象来调度请求到相应的具体处理程序。
 *   	视图（View） - 视图是为请求而创建的对象。
 * 
 *         </pre>
 *
 */
public class TestFilterInterceptor {

	public static void main(String[] args) {
		FilterChain filterChain = new FilterChain();

		FilterInterface filterEncoding = new FilterEncoding();
		filterEncoding.init("UTF-8");
		FilterInterface filterAuthorization = new FilterAuthorization();
		filterAuthorization.init("pattern");

		filterChain.addFilter(filterAuthorization).addFilter(filterEncoding);
		filterChain.doFilter("ISO-8859-1 pattern : first should change UTF-8", null);
		System.out.println("--------");
		filterChain.init().doFilter("ISO-8859-1 patterm : first should change UTF-8", null);
		System.out.println("--------");
		filterChain.init().doFilter("ISO-8859-2 pattern : first should change UTF-8", null);

	}

}
